(begin
  (define (f n)
    (if (> 3 n) n
        (+ (f (- n 1))
           (* 2 (f (- n 2)))
           (* 3 (f (- n 3))))))
    
  (define (g p pp now target)
    (if (= 0 target)
        now
        (g pp now (+ now (* 2 pp) (* 3 p)) (- target 1))))
  (define (df n)
    (if (> 3 n)
        n
        (g 0 1 2 (- n 2))))
  (define (test n)
    (if (> n 0) 
        (begin
          (display (- (df n) (f n)))
          (test (- n 1)))
        0))
  (define (testa n)
    (- (df n) (f n)))
  (testa 10)
  )

